﻿#include "../Logger/Logger.h"

using namespace std;

void test_01()
{
    int a1 = 0, b1 = 1, c1 = 2, d1 = 4;
    int a2 = 5, b2 = 6, c2 = 7, d2 = 8;
    int arr_p1[4] = {a1, b1, c1, d1};
    int arr_p2[4] = {a2, b2, c2, d2};
    int *arr_pp[4] = {arr_p1, arr_p2};
    // arr_tmp指向arr_pp的首元素，也就是arr_pp[0]，这是个指针
    int **arr_tmp = arr_pp;

    LOG_INFO("指针arr_p1的地址:{}", fmt::ptr(arr_p1));
    LOG_INFO("&arr_p1:{}", fmt::ptr(&arr_p1));
    LOG_INFO("*arr_p1:{}", *arr_p1);
    LOG_INFO("&arr_p1[0]:{}", fmt::ptr(&arr_p1[0]));

    LOG_INFO("***********************************************");

    LOG_INFO("指针arr_p2的地址:{}", fmt::ptr(arr_p2));
    LOG_INFO("&arr_p2:{}", fmt::ptr(&arr_p2));
    LOG_INFO("*arr_p2:{}", *arr_p2);
    LOG_INFO("&arr_p2[0]:{}", fmt::ptr(&arr_p2[0]));

    LOG_INFO("***********************************************");

    LOG_INFO("指针arr_pp的地址:{}", fmt::ptr(arr_pp));
    LOG_INFO("&arr_pp:{}", fmt::ptr(&arr_pp));
    LOG_INFO("*arr_pp:{}", fmt::ptr(*arr_pp));
    LOG_INFO("&arr_pp[0]:{}", fmt::ptr(&arr_pp[0]));

    LOG_INFO("***********************************************");

    LOG_INFO("指针arr_tmp的地址：{}", fmt::ptr(arr_tmp));
    LOG_INFO("数组arr_tmp的首地址：{}", fmt::ptr(*arr_tmp));
    LOG_INFO("arr_tmp[1]:{}", (*arr_tmp)[1]);
    LOG_INFO("arr_tmp[0][1]:{}", arr_tmp[0][1]);

    LOG_INFO("***********************************************");

    LOG_INFO("**arr_tmp:{}", **arr_tmp);
    LOG_INFO("**(arr_tmp + 1):{}", **(arr_tmp + 1));
    LOG_INFO("*(*arr_tmp + 1):{}", *(*arr_tmp + 1));
    LOG_INFO("*(*arr_tmp + 2):{}", *(*arr_tmp + 2));

    LOG_INFO("***********************************************");

    LOG_INFO("arr_tmp[0]:{}", fmt::ptr(arr_tmp[0]));
    LOG_INFO("arr_tmp[1]:{}", fmt::ptr(arr_tmp[1]));
}

void logger_init()
{
    // 配置日志系统
    LoggerConfig config;
    config.baseFileName = "./log/unique_ptr_log";
    config.maxFileSize = 1024 * 1024; // 1MB
    config.maxFiles = 3;
    config.consoleOutput = true;
    config.level = spdlog::level::debug;

    // 初始化日志
    Logger::init(config);

    LOG_INFO("我是王乾");
}

int main()
{
    system("chcp 65001");

    logger_init();

    test_01();

    return 0;
}
